#include <iostream>
using namespace std;
typedef long long ll;
int main() {
int T;
cin >> T;
while (T--) {
ll d, m;
cin >> d >> m;
ll ans = 1;
for (int i = 0; i < 32; i++) {
if (d < (1 << i)) break;
ans = (ans * (min(d, (1LL << (i + 1)) - 1) - (1LL << i) + 2)) % m;
}
ans = (ans - 1 + m) % m;
cout << ans << endl;
}
}
1225C - p-binary | 1525D - Armchairs |
1257A - Two Rival Students | 1415A - Prison Break |
1271A - Suits | 259B - Little Elephant and Magic Square |
1389A - LCM Problem | 778A - String Game |
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |
2B - The least round way | 1324A - Yet Another Tetris Problem |
246B - Increase and Decrease | 22E - Scheme |
1566A - Median Maximization | 1278A - Shuffle Hashing |
1666F - Fancy Stack | 1354A - Alarm Clock |
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |
630C - Lucky Numbers | 1208B - Uniqueness |
1384A - Common Prefixes | 371A - K-Periodic Array |